package com.ylr.admin.framework.service;

import com.ylr.base.common.dto.GroupDto;
import com.ylr.base.common.dto.PageDto;
import com.ylr.admin.common.dto.role.RoleDto;
import com.ylr.admin.common.dto.role.RoleEnumDto;
import com.ylr.admin.common.dto.role.SimpleRoleDto;
import com.ylr.base.common.vo.UpdateStatusVo;
import com.ylr.admin.common.vo.role.RoleFormVo;
import com.ylr.admin.common.vo.role.RoleVo;
import com.ylr.admin.framework.entity.RoleEntity;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Set;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-04-21 11:45:26
 * className: RoleService
 * version: 1.0
 * description:
 */
public interface RoleService extends IService<RoleEntity> {

    /**
     * 保存角色操作
     * @param roleVo 参数对象
     */
    void saveRole(RoleVo roleVo);

    /**
     * 分页查询角色列表操作
     * @param roleFormVo 参数对象
     * @return 角色分页数据
     */
    PageDto<RoleDto> pageRoleList(RoleFormVo roleFormVo);

    /**
     * 获取角色列表操作
     * 返回分组后的角色列表数据
     * @return 角色列表
     */
    List<GroupDto<SimpleRoleDto>> getList();

    /**
     * 获取角色数据操作
     * @param id 主键
     * @return 角色数据
     */
    RoleDto getRole(Long id);

    /**
     * 获取角色下一个排序等级操作
     * @return 排序等级数值
     */
    Integer getNextSort();

    /**
     * 获取角色页面枚举数据操作
     * @return 页面枚举数据
     */
    RoleEnumDto getPageEnums();

    /**
     * 查询角色键集合
     * @param roleIdSet 角色主键集合
     * @return 角色键集合
     */
    Set<String> getRoleKeySet(Set<Long> roleIdSet);

    /**
     * 修改角色操作
     * @param roleVo 参数对象
     */
    void updateRole(RoleVo roleVo);

    /**
     * 修改角色状态操作
     * @param updateStatusVo 参数对象
     */
    void updateRoleStatus(UpdateStatusVo updateStatusVo);

    /**
     * 删除角色操作
     * @param idList 主键列表
     */
    void deleteRole(List<Long> idList);


}

